__author__ = 'nvsmirnov'
# -*- coding: utf-8 -*-

import unittest
from Framework.DataClasses.CUser import *
from Framework.PageClasses.CpLogin import CpLogin
from Framework.PageClasses.CpDefault import CpDefault
from Framework.PageClasses.CpResult import CpResult
from Framework.DataClasses.DatabaseData import createDatabaseData
from Framework.PageClasses.CpContracts import CpContracts
from Framework.PageClasses.CpDifferenceProtocol import CpDifferenceProtocol
from Framework.PageClasses.CpProtocolReject import CpProtocolReject
from Framework.PageClasses.CpSignContract import CpSignContract
from Framework.PageClasses.CpContractsGarant import CpContractsGarant

from Tests._tcBase import _tcBase

class BiddingResult(unittest.TestCase, _tcBase):
    """
    Класс тестирует 2е части заявок и подписание контракта
    """
    auction = createDatabaseData()
    auction_id = auction.insertAuction8()
    print "Получили id добавленного аукциона: ", auction_id

    def setUp(self):
        _tcBase.setUpFireFox(self)

    def tearDown(self):
        _tcBase.tearDown(self)
        #_tcBase.clear_ie_cache(self)

    def test_1_result(self, id=auction_id):
        #Логин под ролью "Заказчик"
        pageLogin = CpLogin(self.driver)
        pageLogin.open(self.driver, pageLogin.url)
        pageLogin.loginAs(user1)

        page = CpResult(self.driver)
        page.openAuction(id)
        page.fillForm()
        page.submitForm()

        pageDefault = CpDefault(self.driver)
        pageDefault.LogOut()

    def test_2_contract_prj(self, id=auction_id):
        #Заходим в систему под пользователем с ролью Заказчик
        pageLogin = CpLogin(self.driver)
        pageLogin.open(self.driver, pageLogin.url)
        pageLogin.loginAs(user1)

        pageContract = CpContracts(self.driver)
        pageContract.openAuction()
        pageContract.openContract(id)
        pageContract.fillForm()

        pageDefault = CpDefault(self.driver)
        pageDefault.LogOut()

    def test_3_contracts_garant(self, id=auction_id):
        #Заходим в систему под пользователем с ролью Поставщик
        pageLogin = CpLogin(self.driver)
        pageLogin.open(self.driver, pageLogin.url)
        pageLogin.loginAs(user2)

        page = CpContractsGarant(self.driver)
        page.openAuction(id)
        page.fillForm()
        page.submitForm()

        pageDefault = CpDefault(self.driver)
        pageDefault.LogOut()

    def test_4_difference_protocol(self, id=auction_id):
        #Заходим в систему под пользователем с ролью Поставщик
        pageLogin = CpLogin(self.driver)
        pageLogin.open(self.driver, pageLogin.url)
        pageLogin.loginAs(user2)

        page = CpDifferenceProtocol(self.driver)
        page.openMainPage()
        page.openAuction(id)
        page.fillForm()

        defaultForm = CpDefault(self.driver)
        defaultForm.LogOut()

    def test_5_protocol_reject(self, id=auction_id):
        #Заходим в систему под пользователем с ролью Заказчик
        pageLogin = CpLogin(self.driver)
        pageLogin.open(self.driver, pageLogin.url)
        pageLogin.loginAs(user1)

        page = CpProtocolReject(self.driver)
        page.openMainForm()
        page.openAuction(id)
        page.fillForm()
        page.submitForm()

        pageDefault = CpDefault(self.driver)
        pageDefault.LogOut()

    def test_6_sign_contract(self, id=auction_id):
        #Заходим в систему под пользователем с ролью Поставщик
        pageLogin = CpLogin(self.driver)
        pageLogin.open(self.driver, pageLogin.url)
        pageLogin.loginAs(user2)

        page = CpSignContract(self.driver)
        page.openMainForm()
        page.openAuction(id)
        page.fillForm()
        page.submitForm()

        pageDefault = CpDefault(self.driver)
        pageDefault.LogOut()

    def test_7_delete_auction(self, id=auction_id):
        delete_auction = createDatabaseData()
        delete_auction.delete_auction(delete_id=id)
    
if __name__ == '__main__':
    unittest.main()